home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
m68k
/
tutor.arc
/
E.SA
< prev
next >
Wrap
Text File
|
1990-01-05
|
7KB
|
190 lines
E IDNT 1,0 VERSAbug entry point 01/08/81
XDEF DECODE6
XDEF DECODE21
XDEF INITVECT
XDEF MACSBUG
XDEF MACSBUG1
XDEF NOCMD
XDEF START
XDEF START1S
SPC 1
XREF ABORTE
XREF.S BPTILL
XREF.S ECHOPT1
XREF FIRST
XREF FIXBUF
XREF FIXDATA
XREF.S INFROM
XREF INITHRAM
XREF MSG001
XREF OUTPUT
XREF OUTPUT2
XREF.S OUTTO
XREF PORTIN1
XREF.S REGA7
XREF.S REGPC
XREF.S REGSR
XREF.S REGUS
XREF SWAPOUT
XREF SOLIST
XREF.S SYSTACK
XREF TCMDHOT
XREF.S TRACEON
XREF WHAT
PAGE
SECTION 9
**********************
* INITIALIZE VECTORS *
**********************
* Set most vectors to point at "????" routine
INITVECT LEA 8,A0 Skip (Restart) STACK & ADDRESS vectors
LEA ABORTE(PC),A1 A1 = "Default" TRAP ERROR routine address
SPC 1
INIT0 MOVE.L A1,(A0)+ INITIALIZE VECTOR
CMP.L #$400,A0 Done?
BMI.S INIT0 *
RTS
* SPECIAL ENTRY THAT DOES NOT CHANGE VECTORS
START1S MOVEM.W D0,REGSR+2 Assure good parity.
MOVE.W SR,REGSR+2 SAVE TARGET'S STATUS REGISTER
MOVE.L A7,REGA7 SAVE TARGET'S STACK
MOVE.L (A7),REGPC .PROGRAM COUNTER
LEA REGA7,A7
MOVEM.L D0-D7/A0-A6,-(A7) .REGISTERS
LEA SYSTACK,A7
BRA START11
SPC 3
************************
* INITIALIZATION *
************************
SPC 1
* SAVE PROCESSOR REGISTERS (EXCEPT A7 & PC)
START MOVEM.W D0,REGSR+2 Assure good parity
MOVE.W SR,REGSR+2 SAVE STATUS REGISTER
MOVEM.L D0-D7/A0-A6,-(A7)
SPC 1
LEA SYSTACK,A7 SET UP STACK
MOVE.L A7,REGA7
SPC 1
CLR.L D1
MOVE.L D1,REGPC PC = 000000
BSR INITVECT
* OPTIONAL MODULES LINK IN HERE (SECTION 9)
PAGE
SECTION 10
START11 MOVE.W #$2700,SR MASK OFF INTERRUPTS
SPC 1
MOVE.L USP,A0
MOVE.L A0,REGUS USER STACK
SPC 1
BSR INITHRAM ZERO (INITIALIZE) HIGH RAM
SPC 5
* OPTIONAL MODULES LINK IN HERE (SECTION 10)
PAGE
SECTION 11
************************************************************************
* V E R S I O N N U M B E R A N D P R O M P T *
************************************************************************
SPC 2
MACSBUG MOVE.W #$2700,SR MASK OFF INTERRUPTS
LEA SYSTACK,A7 RESTORE SYSTEM STACK
BSR SWAPOUT GET BP OUT OF USER MEMORY
SPC 1
CLR.L BPTILL GET RID OF 'TILL' BREAKPOINT
CLR.L OUTTO INITIALIZE I/O TO DEFAULT
CLR.L INFROM INITIALIZE I/O TO DEFAULT
CLR.B ECHOPT1 NO ECHO TO PORT1
SPC 1
LEA MSG001(PC),A5 > (Prompt)
BSR FIXDATA
SPC 1
TST.W TRACEON SEE IF IN TRACE MODE
BEQ.S MACSBUG1
MOVE.B #':',(A6)+ IN TRACE MODE
MACSBUG1 MOVE.B #'>',(A6)+ PROMPT
MOVE.B #' ',(A6)+ .. SPACE
BSR OUTPUT GO PRINT IT
PAGE
* INPUT LINE
BSR FIXBUF GET READY FOR INPUT
BSR PORTIN1 GET A COMMAND
DECODE6 MOVE.B #' ',(A6) BLANK OUT END+1
*
* DECODE A COMMAND
*
* DECODE SPECIAL CHARACTER USAGE:
* LEADING SPACES IGNORED
* LEADING NULLS IGNORED
* IF SECOND CHAR * CHAR CAN BE ANY CHAR
CMP.L A6,A5 SEE IF ANYTHING ENTERED
BMI.S DECODE1
TST.W TRACEON SEE IF IN TRACE MODE
BNE TCMDHOT DIRECT TO TRACE 1 COMMAND
SPC 1
DECODE1 CMP.L A6,A5 SEE IF AT END OF BUFFER
BHI WHAT GO TO 'WHAT' IF CONFUSED
MOVE.B (A5),D0 GRAB FIRST CHARACTER
CMP.B #'*',D0 SEND LINE COMMAND
BNE.S DECODE10
ADD.L #1,A5 GET PAST PHOENY PROMPT
BSR OUTPUT2 SEND LINE+CR (NO LF) TO PORT2
BRA MACSBUG REENTER COMMAND MODE
SPC 1
DECODE10 CMP.B #$20,D0 IGNORE LEADING SPACES
BNE.S DECODE2 WHERE TO GO IF NOT A SPACE
ADD.L #1,A5 BUMP START OF BUFFER
BRA.S DECODE1 TRY NEXT CHARACTER
*
DECODE2 MOVE.B (A5),D1 GET 2 LETTERS OF COMMAND
LSL.W #8,D1 MAKE ROOM FOR SECOND CHAR
MOVE.B 1(A5),D1 GET SECOND CHAR
CLR.L D3 D3 = CLEAR "NO" SWITCH
SPC 1
DECODE21 LEA SOLIST(PC),A1 A1 = COMMAND LIST ADDRESS
DECODE4 MOVE.W (A1)+,D2 D2 = 2 CHAR COMMAND FROM LIST
CLR.L D0 CLEAR HIGH BITS
MOVE.W (A1)+,D0 D0 = OFFSET FROM START OF ROM
SPC 1
TST.L D3
BEQ.S DECODE41 NOT A "NO"
TST.B D2 IS "NO" OPTION SUPPORTED THIS COMMAND?
BPL DECODE4 NO...THEN RUN OUT OF COMMANDS
SPC 1
DECODE41 AND.W #$7F7F,D2 CLEAR "INVISABLE" & "NO" BITS
CMP.W #$7F7F,D2 END OF LIST?
BEQ WHAT Command not found
SPC 1
CMP.B #'*',D2 SEE IF DONT CARE CHARACTER
BNE.S DECODE3
MOVE.B D1,D2 DEFAULT
SPC 1
DECODE3 CMP.W D1,D2 Command from table = the input?
BNE DECODE4 COMMAND NOT FOUND
CLR.W TRACEON TURN OFF TRACE MODE
SPC 1
ADD.L #2,A5 POINT A5 PAST 2 DIGIT COMMAND
SPC 1
PEA.L FIRST(PC) BUILD GO TO ADDRESS
ADD.L D0,(A7) ON STACK.
ADD.L D3,(A7) *
SPC 1
MOVE.L (A7)+,A0 GO TO COMMAND
JSR (A0) * SAVE MARK FOR RETURN
BRA MACSBUG * RETURN HERE
* PAGE
*
* NO COMMAND
*
NOCMD MOVE.L #-4,D3 SET "NO" SWITCH
MOVE.B (A5),D1 MOVE CHAR #3
ASL.W #8,D1 MOVE OVER 1 CHAR
MOVE.B 1(A5),D1 MOVE CHAR #4
BRA DECODE21 WHICH "NO" COMMAND?
SPC 1
END